home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 147
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin
/
games
/
sakiba
/
source
/
pad.c
< prev
next >
Wrap
Text File
|
2000-06-20
|
2KB
|
105 lines
/********************************************
格闘シミュレーション「さきば」
入力
********************************************/
#include <sys\iocs.h>
#include "sakiba.h"
#include "pad.h"
/*** ボタンに対応したキー *******/
typedef struct {
PAD pad; /* ボタン */
int kbit[2][2]; /* キー */
} PAD_KEY;
static PAD_KEY pad_key[6] = { {PAD_UP,
{{0x02, 0x20}, /* T */
{0x08, 0x10}}}, /* 8 */
{PAD_DOWN,
{{0x05, 0x20}, /* V */
{0x09, 0x10}}}, /* 2 */
{PAD_LEFT,
{{0x04, 0x02}, /* F */
{0x08, 0x80}}}, /* 4 */
{PAD_RIGHT,
{{0x04, 0x08}, /* H */
{0x09, 0x02}}}, /* 6 */
{PAD_A,
{{0x0a, 0x20}, /* XF1 */
{0x0e, 0x04}}}, /* OPT.1 */
{PAD_B,
{{0x0a, 0x40}, /* XF2 */
{0x0e, 0x08}}} /* OPT.2 */
};
static PAD pad_data[2] = {0xffff, 0xffff}; /* パッドの状態 */
static PAD pad_just[2]; /* 今回の変化 */
static PAD pad_rept[2]; /* リピート付き */
static int pad_cnt[2] = {16, 16}; /* リピート用カウンタ */
Bool esc_key = FALSE; /* ESCキー */
/********************
パッド同期処理
********************/
void pad_synch(void)
{
PAD_KEY* p;
PAD last;
int i, j;
for (i = 0; i < 2; i++) {
last = pad_data[i]; /* 前回の状態 */
pad_data[i] = ~_iocs_joyget(i); /* スティックデータ取得 */
for (j = 0, p = pad_key; j < 6; j++, p++) {
if ( _iocs_bitsns(p->kbit[i][0]) & p->kbit[i][1] ) {
pad_data[i] |= p->pad;
}
}
pad_just[i] = pad_data[i] & ~last; /* 変化データ */
pad_rept[i] = pad_just[i]; /* リピート付き */
if ( pad_data[i] == last ) {
if ( --pad_cnt[i] == 0 ) {
pad_rept[i] = pad_data[i];
pad_cnt[i] = 4;
}
}
else {
pad_cnt[i] = 16;
}
}
if ( _iocs_bitsns(0) & 0x02 ) { /* ESCキー */
esc_key = TRUE;
}
}
/**************************************
パッド状態取得
引数 num = プレイヤー番号
戻り値 パッド状態
**************************************/
PAD get_pad(int num) /* そのまま */
{
return pad_data[num];
}
PAD get_push(int num) /* 押した直後 */
{
return pad_just[num];
}
PAD get_rept(int num) /* リピート付き */
{
return pad_rept[num];
}
/***************** End of File *******************************************/